import os  # 导入OS模块
file_size = 0  # 定义全局变量file_size，用于存放统计的文件大小

('\n'
 'get_file_size(file_path)函数用于统计指定路径的文件大小\n'
 'file_path字符串参数，表示指定的文件路径\n'
 'return file_size返回值 str 或 int，str表示路径错误的提示信息，int表示统计的文件大小\n')


def get_file_size(file_path):
    global file_size  # 全局变量file_size
    # 先判断指定的文件路径是否是一个目录，如果是，对目录进行遍历
    if os.path.isdir(file_path):
        # 获取该目录下的所有文件和文件夹组成的列表
        file_list = os.listdir(file_path)
        # 对列表通过for循环进行遍历
        for f in file_list:
            # 将遍历出的文件名和指定的文件路径拼接
            file_path_n = os.path.join(file_path, f)
            # 判断拼接的文件路径是否是一个文件，如果是，直接通过os.path.getsize()函数获取文件大小
            if os.path.isfile(file_path_n):
                file_size += os.path.getsize(file_path_n)
            # 如果拼接的文件路径是一个目录，递归调用自己，实现子目录的文件大小统计
            else:
                get_file_size(file_path_n)
    # 如果指定文件路径不存在,则返回路径错误的提示信息
    elif not os.path.exists(file_path):
        file_size = "指定路径不存在，请检查！！！"
    # 如果指定文件路径是一个文件，则直接通过os.path.getsize()函数获取文件大小
    else:
        file_size = os.path.getsize(file_path)
    # 返回统计的指定路径文件大小
    return file_size


# 用变量接收get_file_size()函数执行的返回值
actual_file_size = get_file_size("F:\\Python_code")
# 判断返回值类型，如果是字符串，则直接打印输出
if isinstance(actual_file_size, str):
    print(actual_file_size)
# 返回值如果是整型值，则进行格式化输出，将获取的字节大小值转换为兆字节值，并保留4位小数
else:
    print("指定路径文件大小: {:.4f} MB".format(actual_file_size / 1024 / 1024))
